import request from '@/utils/request' // 假设request.js路径为src/utils/request.js

export const logisticsApi = {
  /**
   * 创建入库订单（状态默认"待审核"）
   * @param {Object} params - 请求参数
   * @param {string} params.productId - 商品ID（MongoDB ObjectId，必填）
   * @param {string} params.productName - 商品名称（必填）
   * @param {number} params.quantity - 入库数量（≥1，必填）
   * @param {string} params.supplier - 供应商信息（必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  createInboundOrder: (params) => {
    return request.post('/logistics/inbound-orders', params)
  },

  /**
   * 审核通过入库订单（更新状态为"已入库"并增加库存）
   * @param {string} id - 入库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（更新后的入库订单对象）
   */
  approveInboundOrder: (id) => {
    return request.put(`/logistics/inbound-orders/${id}/approve`)
  },

  /**
   * 审核不通过入库订单（更新状态为"审核不通过"）
   * @param {string} id - 入库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  rejectInboundOrder: (id) => {
    return request.put(`/logistics/inbound-orders/${id}/reject`)
  },

  /**
   * 查询所有入库订单列表
   * @returns {Promise} 响应结果（入库订单数组）
   */
  getInboundOrdersList: () => {
    return request.get('/logistics/inbound-orders')
  },

  /**
   * 查询单个入库订单详情
   * @param {string} id - 入库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（单个入库订单对象）
   */
  getInboundOrderDetail: (id) => {
    return request.get(`/logistics/inbound-orders/${id}`)
  },

  /**
   * 确认入库订单（更新库存并同步采购订单状态）
   * @param {string} id - 入库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  confirmInboundOrder: (id) => {
    return request.put(`/logistics/inbound-orders/${id}/confirm`)
  },

  /**
   * 重新审核入库订单（将状态从非待审核恢复为待审核）
   * @param {string} id - 入库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  reAuditInboundOrder: (id) => {
    return request.put(`/logistics/inbound-orders/${id}/re-audit`)
  },


  // 出库订单相关接口

  /**
   * 创建出库订单（需校验商品存在、库存充足、未下架）
   * @param {Object} params - 请求参数
   * @param {string} params.productId - 商品ID（MongoDB ObjectId，必填）
   * @param {string} params.productName - 商品名称（必填）
   * @param {number} params.quantity - 出库数量（正整数，必填）
   * @param {string} params.userName - 收货人姓名（必填）
   * @param {string} params.phone - 联系电话（必填）
   * @param {string} params.address - 收货地址（必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  createOutboundOrder: (params) => {
    return request.post('/logistics/outbound-orders', params)
  },

  /**
   * 查询所有出库订单列表
   * @returns {Promise} 响应结果（出库订单数组）
   */
  getOutboundOrdersList: () => {
    return request.get('/logistics/outbound-orders')
  },

  /**
   * 查询单个出库订单详情
   * @param {string} id - 出库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（单个出库订单对象）
   */
  getOutboundOrderDetail: (id) => {
    return request.get(`/logistics/outbound-orders/${id}`)
  },

  /**
   * 出库订单审核通过（状态变更为"待发货审核"）
   * @param {string} id - 出库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和更新后的order）
   */
  approveOutboundOrder: (id) => {
    return request.put(`/logistics/outbound-orders/${id}/approve`)
  },

  /**
   * 出库订单发货（扣减库存并标记为已发货）
   * @param {string} id - 出库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和更新后的order）
   */
  deliverOutboundOrder: (id) => {
    return request.put(`/logistics/outbound-orders/${id}/deliver`)
  },


  // 出库订单相关接口（新增两个接口）
  /**
   * 出库订单审核不通过（状态变更为"审核不通过"）
   * @param {string} id - 出库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  rejectOutboundOrder: (id) => {
    return request.put(`/logistics/outbound-orders/${id}/reject`)
  },

  /**
   * 出库订单重新进入审核（状态从"审核不通过"变更为"待审核"）
   * @param {string} id - 出库订单ID（MongoDB ObjectId，必填）
   * @returns {Promise} 响应结果（包含message和order）
   */
  reAuditOutboundOrder: (id) => {
    return request.put(`/logistics/outbound-orders/${id}/re-audit`)
  }
}